Systems and methods of managing data rights and selective data sharing

ABSTRACT

A method includes receiving an access request at a first computing device from a second computing device, the access request specifying a data structure, the data structure including first data stored in a first portion of the data structure and second data stored in a second portion of the data structure. The method also includes extracting a first key from the access request and identifying a data rights definition that is associated with the data structure and that is associated with a second key, the data rights definition indicating that the first data but not the second data is shared with an entity associated with the second computing device. The method further includes comparing the first key to the second key, and, based on the comparison, determining whether to grant the second computing device access to the first data but not the second data.

BACKGROUND

Computer networks, such as public networks (e.g., the Internet) andprivate networks (e.g., at medical institutions, financial institutions,business enterprises, etc.) have become a medium for research,communication, distribution, and storage of data. Consequently, more andmore devices are network-enabled. To illustrate, on any given day, atypical user may access a half-dozen or more network-enabled devices,such as their mobile phone, tablet computer, home security systemdevices, one or more wearable devices, a home laptop or desktop, a worklaptop or desktop, and home entertainment devices (e.g., televisions,game consoles, set top boxes, etc.). Moreover, Internet of Things (IoT)protocols enable network-enabled devices to communicate with each otherwithout user intervention. Thus, there is an increasing amount of databeing accessed, transferred, and stored online. As users use networks toaccess data, they also generate a large amount of data regardingthemselves. On websites such as social networks, users actively andwillingly share data regarding themselves. Thus, at any given time,different subsets of data regarding a user or a group of users may beavailable online. However, it may be difficult to share data across dataaggregators or websites to gain a more “complete” understanding of auser due to privacy concerns and/or technological incompatibilities(e.g., incompatible data storage formats across different aggregators orwebsites). In addition, data sharing may be limited to an“all-or-nothing” model, i.e., a website or aggregator may have only twochoices regarding data sharing: share all data regarding all users, orshare no data regarding any user.

SUMMARY

Systems and methods of managing data rights and enabling selective datasharing are disclosed. The techniques of the present disclosure mayenable selectively sharing some, but not all, of the data stored in adata structure, such as a table, a database and/or a bitmap index. Thedisclosed selective sharing of arbitrarily selected part(s) of a datastructure may provide a more granular data sharing approach than“all-or-nothing” systems, and may be more efficient than systems inwhich data to be shared is duplicated to a new data structure so that(the entirety of) the new data structure can be shared.

The bitmap index may enable real-time or near-real-time computation ofvarious metrics or queries that combine logical set operations, such asAND, OR, and NOT operations. When the underlying data set is large, thebit strings of the bitmap index may be stored in distributed fashionacross multiple network-attached storage nodes, and executing queries onthe bitmap index may involve parallel computations on multiple storagenodes. In particular examples, the bitmap index includes metadataname-value pairs. Inclusion of such metadata within the bitmap index mayenable generating query results without having to perform lookupoperations on external data structures.

In accordance with at least one described embodiment, a method includesreceiving an access request at a first computing device from a secondcomputing device, the access request specifying a data structure, thedata structure including first data stored in a first portion of thedata structure and second data stored in a second portion of the datastructure. The method also includes extracting a first key from theaccess request and identifying a data rights definition that isassociated with the data structure and that is associated with a secondkey, the data rights definition indicating that the first data but notthe second data is shared with an entity associated with the secondcomputing device. The method further includes comparing the first key tothe second key, and, based on the comparison, determining whether togrant the second computing device access to the first data but not thesecond data.

Aspects of the present disclosure may include one or more of thefollowing:

-   -   The data structure may be stored at the first computing device.    -   The data structure may be stored remote to the first computing        device.    -   The data structure may include a database table.    -   The data structure may include a bitmap index.    -   The bitmap index may include a plurality of bit strings, where a        value stored in a particular location in each of the bit strings        indicates whether a corresponding signal associated with a        signal source has been received.    -   The signal source may correspond to a user, to an electronic        device associated with the user, or an internet of things (IoT)        device.    -   The bitmap index may store data associated with at least one        demographic attribute, at least one behavior, at least one brand        affinity, or a combination thereof.    -   The bitmap index may store data associated with at least one        patient, medical staff, medical equipment, at least one medical        location, at least one medicine, at least one healthcare event,        at least one medical attribute, or any combination thereof.    -   The bitmap index may store data associated with at least one        investor, at least one financial advisor, at least one financial        product, at least one account, at least one investment, or any        combination thereof.    -   The bitmap index may store data associated with at least one        internet of things (IoT) device, at least one sensor reading, at        least one communication by the IoT device, at least one status        of the IoT device, at least one event observed by the IoT        device, or any combination thereof.    -   The bitmap index stores data associated with at least one        customer, at least one product in inventory, or any combination        thereof.    -   The data rights definition may be stored in a repository that        stores a plurality of data rights definitions associated with a        plurality of data structures and a plurality of entities.    -   At least a portion of the data rights definition may be stored        in the data structure.    -   The data rights definition may further indicate whether the        entity associated with the second computing device has read-only        access to the first data or read-write access to the first data,        that the first data is shared with the entity associated with        the second computing device for a particular time period,        whether personally identifiable information associated with the        first data is shared with the entity associated with the second        computing device, or any combination thereof.    -   Granting access to the first data may include sending a copy of        the first data to the second computing device for storage in a        second data structure at the second computing device.    -   The method may further include receiving a write operation with        respect to the first data, and causing the write operation to be        replicated at the copy of the first data in the second data        structure.    -   The write operation may be replicated responsive to a push        synchronization operation initiated by the first computing        device or responsive to a pull synchronization operation        initiated by the second computing device or by another computing        device associated with the entity.

In another particular embodiment, an apparatus includes a processor anda memory storing instructions executable by the processor to performoperations including receiving an access request at a first computingdevice from a second computing device, the access request specifying adata structure, the data structure including first data stored in afirst portion of the data structure and second data stored in a secondportion of the data structure. The operations also include extracting afirst key from the access request and identifying a data rightsdefinition that is associated with the data structure and that isassociated with a second key, the data rights definition indicating thatthe first data but not the second data is shared with an entityassociated with the second computing device. The operations furtherinclude comparing the first key to the second key and, based on thecomparison, determining whether to grant the second computing deviceaccess to the first data but not the second data.

In another particular embodiment, a computer-readable storage devicestores instructions that, when executed, cause a computer to performoperations including receiving an access request at a first computingdevice from a second computing device, the access request specifying adata structure, the data structure including first data stored in afirst portion of the data structure and second data stored in a secondportion of the data structure. The operations also include extracting afirst key from the access request and identifying a data rightsdefinition that is associated with the data structure and that isassociated with a second key, the data rights definition indicating thatthe first data but not the second data is shared with an entityassociated with the second computing device. The operations furtherinclude comparing the first key to the second key and, based on thecomparison, determining whether to grant the second computing deviceaccess to the first data but not the second data.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram to illustrate a particular embodiment of a systemthat is operable to manage data rights and enable selective datasharing;

FIG. 2 is a diagram to illustrate a particular embodiment of a datarights definition;

FIG. 3 is a diagram to illustrate another particular embodiment of asystem that is operable to manage data rights and enable selective datasharing;

FIG. 4 is a diagram to illustrate particular embodiments of data sharingarrangements;

FIG. 5 is a diagram to illustrate a particular embodiment of a bitmapindex;

FIG. 6 is a diagram to illustrate a particular embodiment of a method ofprocessing a registration event;

FIG. 7 is a diagram to illustrate a particular embodiment of a method ofupdating a bitmap index;

FIG. 8 is a diagram to illustrate another particular embodiment of amethod of updating a bitmap index;

FIG. 9 is a diagram to illustrate a particular embodiment of a method ofusing a bitmap index during execution of a query;

FIG. 10 is a diagram to illustrate another particular embodiment of amethod of using a bitmap index during execution of a query;

FIG. 11 is a diagram to illustrate a particular embodiment of a methodof generating a query execution plan corresponding to the query of FIG.10 ;

FIG. 12 is a diagram to illustrate a particular embodiment of a methodof compressing and storing a bit string of a bitmap index;

FIG. 13 is a diagram to illustrate a particular embodiment of anmultidimensional bitmap index including an internally stored data rightsdefinition;

FIG. 14 is a flowchart to illustrate a particular embodiment of a methodof operation in accordance with the present disclosure;

FIG. 15 is a diagram to illustrate a particular embodiment of anaudience measurement system that is operable to generate and use abitmap index; and

FIGS. 16A, 16B, 16C, and 16D are diagrams to illustrate anotherparticular embodiment of an audience measurement system that is operableto generate and use a bitmap index.

DETAILED DESCRIPTION

FIG. 1 illustrates a particular embodiment of a system 100 including ameasurement system 120 configured to receive event signals 110associated with the audience of one or more media properties (e.g.,websites). The event signals 110 may be received from sources thatinclude, but are not limited to, computing devices, mobile devices, webservers, measurement logs, third-party data sources, and socialnetworks. It is to be understood that although various embodiments maybe described herein in the context of audience measurement for mediaproperties (e.g., websites), the present disclosure is not limited assuch. A bitmap index may be used to represent data collected in otherscenarios, including but not limited to sensor data, data from variousInternet of Things (IoT) devices, genomic data, financial data, etc. Insome examples, a bitmap index may represent data that is unrelated toInternet use. For example, a bitmap index may be used to representstatic data sets that are uploaded to the measurement system 120offline, and may correspond to data that was not captured/generateddigitally, even though such data is represented digitally in the bitmapindex. The systems and methods of the present disclosure may thus beagnostic as to the origin and type of data being represented by a bitmapindex.

The measurement system 120 may be implemented using one or morecomputing devices (e.g., servers). For example, such computing devicesmay include one or more processors or processing logic, memories, andnetwork interfaces. The memories may include instructions executable bythe processors to perform various functions described herein. Thenetwork interfaces may include wired and/or wireless interfaces operableto enable communication to local area networks (LANs) and/or wide areanetworks (WANs), such as the Internet. In the illustrated example, themeasurement system 120 is communicably coupled to a network 130.

The event signals 110 may include information associated with audiencemembers of a media property. For example, when an audience membercreates an account or otherwise registers with a media property usingsocial networking identification, the measurement system 120 mayretrieve event signals corresponding to data stored in social networkingprofiles of the audience member. As another example, the event signals110 may identify specific interactions by the audience members withrespect to the media property (e.g., what action was taken at a mediaproperty, when the action was taken, for how long the action was taken,etc.). The interactions may include interactions with advertisementspresented by the media property and/or interactions with contentpresented by the media property. In a particular embodiment, each of theevent signals 110 identifies a property (e.g., “Property 1”) and anaudience member (alternately referred to herein as a “user”). Forexample, if a user having a user ID=N made a purchase on the website forProperty 1, a corresponding event signal received by the measurementsystem 120 may be “(userID=N, property=‘Property 1’,behavior=Purchase)”. In some examples, an event signal may also includemetadata regarding an audience member and/or an attribute. In alternateembodiments, a different format may be used to represent an eventsignal. In some embodiments, an event signal includes an alphanumerickey (e.g., a cryptographically generated value) that is verified by themeasurement system 120, as further described herein, before taking anyother actions regarding the event signal.

The measurement system 120 may include a data processing module 122 anda query execution module 124, each of which may be implemented usinginstructions executable by one or more processors at the measurementsystem 120. The data processing module 122 may receive the event signals110 and store “raw” data corresponding to the event signals 110 (e.g., acopy of the event signals 110) in cloud-based storage 140. The dataprocessing module 122 may also store indexing data for the cloud-basedstorage 140 in a bitmap index 126. Ina particular embodiment, unlike thecloud-based storage 140, the bitmap index 126 may be local (or morequickly accessible) to the measurement system 120. To illustrate, datafor the bitmap index 126 may be stored across one or more data storagedevices (e.g., nodes) that are part of the measurement system 120 oraccessible to the measurement system 120 via a LAN, or other privatehigh-speed network, as opposed to a WAN. Alternatively, or in addition,data of the bitmap index 126 may be stored “in-memory,” such as in RAM.Thus, read and write operations with respect to the bitmap index 126 maybe faster than corresponding read and write operations with respect tothe cloud-based storage 140.

The measurement system 120 may maintain a bitmap index 126 for eachmedia property being measured. Data in the bitmap index 126 may bestored in the form of bit strings. The bitmap index 126 may store bitstrings corresponding to at least a subset of the data stored in thecloud-based storage 140. Thus, depending on implementation, the bitmapindex 126 may, for a particular media property, include bit strings forall of the data stored in the cloud-based storage 140 or less than allof the data stored in the cloud based storage 140. In a particularembodiment, the bitmap index 126 for a particular media propertyincludes, for each audience member of the media property, data regardingone or more attributes of the audience member, which may include but arenot limited to demographic attributes, brand affinities, behaviors(e.g., interactions with the media property), etc. It is to beunderstood that the techniques of the present disclosure may be usedwith bitmap indexes having an arbitrary number of rows (e.g., R, where Ris an integer greater than or equal to one) and an arbitrary number ofcolumns (e.g., C, where C is an integer greater than or equal to one).

To illustrate, a media property may have a known audience of one hundredthousand registered members. The bitmap index 126 for the media propertymay include bit strings representing various attributes associated witheach of the hundred thousand audience members. Thus, each of the bitstrings may be one hundred thousand bits in length. Further, the samelocation in each bit string may correspond to the same audience member.For example, if the N^(th) location in a “Male” bit string has a valueof “1” and the N^(th) location in a “Watches video” bit string has avalue of “1,” this indicates that the N^(th) audience member (who has auserID=N) is a male that has watched at least one video on the property.

In some examples, the bitmap index 126 for a media property may storebit strings corresponding to less than all of the data stored in thecloud-based storage 140. For example, although the cloud-based storage140 may include ‘raw’ data corresponding millions of signals (alsoreferred to herein as “tiles”), the bitmap index 126 may store bitstrings for a smaller subset of the most popular signals/tiles (e.g.,the top fifty thousand signals/tiles). In an alternative embodiment, thebitmap index 126 may store bit strings for all of the signals/tilestracked in the cloud-based storage 140. Examples of the bitmap index 126are further described herein. In a particular embodiment, the bitmapindex 126 is automatically sorted based on a parameter, such as thetotal count of asserted bits in each bit string, as an illustrative,non-limiting example.

The query execution module 124 may be configured to use the bitmap index126 to execute queries regarding measurement data for a media property.For example, the query execution module 124 may receive a query 150corresponding to the question “What are the top 50 tiles/signals for myaudience?” In a particular embodiment, the query 150 may be generatedusing a query generation interface. If the bitmap index 126 is alreadysorted by the total number of asserted bits, the query execution module124 may return data regarding the first fifty strings in the bitmapindex 126.

Alternatively, if the bitmap index 126 is not sorted, the queryexecution module 124 may perform count operations on bit strings storedin the bitmap index 126. In a particular embodiment, because the bitstrings may be stored across multiple nodes, the query execution module124 may formulate a query execution plan that parallelizes execution ofthe query 150 across multiple nodes and minimizes the amount of datathat is transferred between nodes during execution of the query 150. Byexecuting the query 150 on bit strings stored in the bitmap index 126 inparallel without retrieving data from the cloud-based storage 140 and byreducing or minimizing data transfers, the query execution module 124may achieve real-time or near-real-time performance. For example, thequery execution module 124 may have a maximum query execution latencyless than or equal to one hundred milliseconds. Further examplesregarding query execution are described herein.

In particular aspects, the bitmap index 126 may store data associatedwith one or more media properties associated with a first entity (e.g.,a user, group of users, or business organization), and the measurementsystem 120 may additionally include or have access to bitmap indexes132, 134 that store data associated with one or more propertiesassociated with a second entity and a third entity, respectively. In analternative example, one or more of the bitmap indexes 132, 134 isincluded in or accessible to one or more other measurement systemsinstead of or in addition to the measurement system 120. The system 100may enable an entity to share data stored in an arbitrarily specifiedportion of a data structure with another entity. For example, the firstentity associated with the bitmap index 126 and the cloud-based storage140 may share less than an entirety of the bitmap index 126 and/or datatables of the cloud-based storage 140 with the second entity (associatedwith the bitmap index 132) or the third entity (associated with thebitmap index 134).

To enable such data sharing, the system 100 may include data rightsdefinitions 128, which may correspond to “data subscriptions” betweenthe entities. FIG. 2 illustrates an example of an illustrative datarights definition 200 for the bitmap index 126. In the example of FIG. 2, the bitmap index 126 includes 7 rows (denoted R1-R7) and 7 columns(denoted C1-C7), although it is to be understood that in alternativeexamples, a bitmap index may include a different number of rows and/or adifferent number of columns. Two of the bits in the bitmap index aredenoted B1 and B2, for illustrative purposes.

Data rights definitions may enable the first entity to share anycombination of rows, columns, and bits with another entity. For example,the data rights definition 200 indicates that the first entity hasshared the rows R5-R6, the columns C1-C2, and the bits B1-B2 with thesecond entity (in other examples, a portion of a row or column ratherthan an entire row or column may be shared). The data rights definition200 indicates that the first entity is a grantor of the data rights andthat the second entity is a grantee of the data rights. In alternativeexamples, more than one grantor and/or grantee may be indicated in adata rights definition. The data rights definition 200 also indicatesthat the second entity is being granted read-only access, until Dec. 31,2020, to R5-R6, C1-C2, and B1-B2 of the bitmap index 126. The datarights definition 200 further indicates that personally identifiableinformation (PII) is being shared for C1-C2 and B1-B2, but not forR5-R6. Thus in an example, where each column represents a different userprofile and each row represents a different tile/segment, PHI (e.g.,name, e-mail address, social networking profiles, etc.) may be sharedfor the users corresponding to C1-C2 and B1-B2.

The data rights definition 200 further includes a key. In theillustrated example, the key is a 504-bit key, although the key may be adifferent length in alternative embodiments. The key may be used by thesecond entity to gain access to the shared data. For example, the secondentity (or a computing device associated therewith) may include the keyin an access request for the shared data. The key included in therequest may be extracted and compared to the key in the data rightsdefinition 200, and access to the shared data may be granted based onthe comparison (e.g., if the keys “match”). As used herein, keys may“match” if the keys are identical or if the keys can be verified byperforming mathematical operations (e.g., as a in a public/private keypair). Thus, as used herein, a “data rights definition” may refer todata that indicates whether (and enables a computing device to determinewhether) and in what fashion data is being shared by one entity withanother entity, where such data may correspond to a portion of a datastructure and need not correspond to an entirety of the data structure.In some examples, if a data rights definition indicates that first datastored in a first portion of a data structure is shared with an entityand is silent regarding second data stored in a second part of the datastructure, this means that the second data is not being shared with theentity.

In some examples, a single data rights definition enables two-way datasharing (e.g., entity E1 shares a portion of data structure D1 withEntity E2, and Entity E2 shares a portion of data structure D2 withEntity E1). Alternatively, two-way sharing may be implemented via a pairof one-way data rights definitions.

Returning to FIG. 1 , the data rights definitions 128, which in someexamples may correspond to multiple data structures owned by multipleentities, may be stored in a repository that can be located in variousplaces. For example, the data rights definitions may be stored in themeasurement system 120, as part of one or more of the bitmap indexes126, 132, 134, or in the cloud-based storage 140, as shown. Storing datarights definitions in a bitmap index may advantageously integrate boththe data being shared and the access rights for the data into the samedata structure, which may provide improved flexibility, faster dataaccess time, and a smaller memory footprint than if the data rightsdefinitions were stored separately from the data being shared.Conversely, storing data rights definitions at the measurement system120 or in the cloud-based storage 140 may provide a convenientcentralized repository for data rights information may providereliability in situations where a data structure being shared (e.g., abitmap index) becomes corrupted, because the data rights information isseparate from the data structure.

During operation, the measurement system 120 may receive the eventsignals 110 from various event sources. Each event signal may include aunique identifier, such as a user ID. If the user is a “new” audiencemember, the user may be assigned a new user ID and a user profile may becreated for the user. Data for the user profile may be stored in thecloud-based storage 140 and/or the bitmap index 126.

In a particular embodiment, data for the user profile may be retrievedfrom third party data sources, including but not limited to socialnetworks. For example, the data may include, but is not limited to,demographic information associated with the user (e.g., a name, an age,a geographic location, a marital/family status, a homeowner status,etc.), social information associated with the user (e.g., socialnetworking activity of the user, social networkingfriends/likes/interests of the user, etc.), and other types of data. Insome examples, when a user profile is created, a data rights definitionmay automatically be created as well, where the data rights definitionlists the user as the grantor and an entity associated with themeasurement system 120 as the grantee. In some examples, theautomatically created data rights definition may indicate specific datarights based on terms/conditions of use specified by the user or derivedfrom the social networks or other data sources that were accessed topopulate the user's profile.

The cloud-based storage 140 and the bitmap index 126 may, be updated asadditional event signals 110 are received (e.g., when additional usersregister with the media property, interact with the media property,etc.). When the measurement system 120 receives the query 150, the queryexecution module 124 may execute the query 150 based on a queryexecution plan that parallelizes execution and reduces/minimizes theamount of bit string data that is transferred between nodes duringexecution of the query 150.

In some examples, there may be interest in finding out more about theindividual audience members in a segment, rather than merely “what aremy top 50 segments.” For example, it may be useful to, after identifyingthe top fifty segments for a property, retrieve a list of e-mailaddresses of the users in each of the top fifty segments. As anotherexample, it may be useful to compare the relative popularity of thesegments for the property to a larger measurement universe that includesdata for multiple properties. Relevant metadata that may be used toanswer such queries may, in some examples, be stored as a part of thebitmap index 126 as custom internal metadata. Consequently, e-mailaddresses for users (instead of or in addition to profile IDs) may bereturned as a query result. Thus, including custom internal metadata inthe bitmap index 126 may remove the need to access data structures orperform post-query external lookup operations in some cases. In someexamples, data rights definitions associated with a data structure arestored as custom metadata within the data structure, as furtherdescribed herein.

In some cases, the measurement system 120 may receive an access request160. To illustrate, the access request 160 may specify a data structure(e.g., the bitmap index 126), where the data structure includes firstdata stored in a first portion of the data structure and second datastored in a second portion of the data structure. The first data may beshared with the requesting entity but the second data may not be sharedwith the requesting entity. In response to receiving the access request160, the measurement system 120 may extract a first key from the requestand may identify one of the data rights definitions 128 that isassociated with the data structure. The identified data rightsdefinition may indicate that the first data is shared with therequesting entity and may be associated with a second key. Themeasurement system 120 may compare first key to the second key. When thekeys match, the measurement system 120 may grant the requesting entityaccess to the first data but not the second data. When the keys do notmatch, the measurement system 120 may deny the access request 160. Insome embodiments, all read or write operation on a bitmap index includea key that is used to determine whether the read or write is authorized.

The system 100 of FIG. 1 may thus enable audience measurement andanalysis based on data (e.g., event signals) received from varioussources, and may further enable selectively sharing some, but not all,of the data stored in a data structure, such as the bitmap index 126 ora database table stored in the cloud-based storage 140. Event signalsmay be generated, for example, in response to user interactions withwebsites, web pages, audio items, video items, games, and/or textassociated with various media properties. Further, the system 100 ofFIG. 1 may enable real-time or near-real time execution of queries onthe collected data. For example, the query execution module 124 mayexecute complex “top N” queries using the bitmap index 126 in real-timeor near-real-time (e.g., within one hundred milliseconds).

Although one or more embodiments may be described herein in terms ofaudience measurement (e.g., the bit strings of the bitmap index 126correspond to demographic information, brand affinities, and/orbehaviors), it is to be understood that the present disclosure is notlimited to audience measurement scenarios. In alternate embodiments, thebitmap index 126 may store healthcare-related data. For example, thedescribed bitmap index may correspond to information associated withpatients, medicines, medical staff (e.g., doctors, nurses, etc.) medicallocations (e.g., clinics, hospitals, etc.), medical equipment, or anycombination thereof. Accordingly, in such an embodiment, the eventsignals 110 may, in a particular example, identify a patient andcorrespond to a healthcare event (e.g., a visit to a doctor's office, aprescription being filled, a medical diagnosis, a medical treatment ormedicine being administered, a reading from a medical sensor, etc.). Bitstrings of the bitmap index 126 may additionally or alternativelycorrespond to medical attributes, such as medical history, allergyinformation, medication taken, etc. In some examples, the same locationin each bit string may correspond to the same patient.

As another example, the bitmap index 126 may correspond to inventory orcustomers of a store. Bit strings of the bitmap index 126 may correspondto attributes of inventory, such as color, price, demand, number of anitem “in stock,” etc., and/or attributes of customers. The same locationin each bit string may correspond to the same inventory item and/or thesame customer.

As yet another example, in the financial industry, the same location ineach bit string may correspond to the same investor, the same financialadvisor, the same financial product, etc. Bit strings of the bitmapindex 126, in a financial services context, can include demographicinformation, account information, investment information, or anycombination thereof.

As yet another example, bit strings of the bitmap index 126 maycorrespond to data output by devices in an IoT environment, and the samelocation of each bit string may correspond to the same IoT device. Whenan IoT device includes a sensor, the data output by the IoT device caninclude a sensor reading. Alternatively, or in addition, the data outputby an IoT device can indicate a communication transmitted to or receivedby the IoT device, a status of the IoT device (e.g., powering up,powering down, battery level, etc.), an event observed by the IoT device(e.g., motion detected by a motion sensor, pressure detected by apressure sensor, etc.), or any combination thereof.

FIG. 3 illustrates an example of a system 300 that is operable to updateshared data. In the example of FIG. 3 , a first measurement system 310is configured to communicate with a second measurement system 320 via anAPI 330. The first measurement system 310 is associated with first datastorage 312, which may store one or more data structures, such as abitmap index, a data table, etc. The second measurement system 320 isassociated with second data storage 322.

During operation, the first measurement system 310 may generate datarights definitions, as described with reference to FIG. 1 . The datarights definitions may indicate that data 340 (which may a portion ofdata stored in a data structure at the first data storage 312) is to beshared with the second measurement system 320 (or an entity associatedtherewith). In the illustrated example, the shared data 340 indicateswhether three users having user profile identifiers (IDs) M, N, and Pare in the age range 21-25, have made a purchase at a media property(e.g., website) and have read an article at the media property. Theterms “profile ID” and “user ID” may be used interchangeably herein.

To access the shared data 340, the second measurement system 320 maysend an access request 302 to the first measurement system 310. Theaccess request 302 may correspond to an API call supported by the API330 and may include a scoped API key. The first measurement system 310may compare the scoped API key to a key stored in (or associated with)the data rights definition. If the keys match, the first measurementsystem 310 may send a copy 304 of the shared data 340 to the secondmeasurement system 320 for storage in the second data storage 322.

In some cases, the shared data 340 may change after the copy 304 of theshared data 340 is provided to the second measurement system 320. Forexample, the first measurement system 310 may receive an event signal306 indicating that user N made a purchase, resulting in a writeoperation that modifies a ‘0’ value of a bit to a ‘1’ value, as shown.In a particular embodiment, in response to performing or initiating thewrite operation of the bit at the first data storage 312, the firstmeasurement system 310 may search data rights definitions to check ifthe bit being modified has been copied to any other places. If so, thefirst measurement system 310 may automatically send message(s) 308 toinitiate a replication of the write operation at such places. In someaspects, the replication of the write is initiated via a pushsynchronization operation that is communicated to other computingdevices that store a copy of the shared data 340. Alternatively, thereplication of the write may be initiated via a pull synchronizationoperation or mechanism. To illustrate, the second measurement system 320may send a synchronization request 309 to the first measurement system310, and the first measurement system 310 may send the message 308 inresponse to the synchronization request 309. Push synchronization mayenable near-real-time updates to copies of shared data, whereas pullsynchronization may provide grantee control of updates (e.g., a datarights grantee may request synchronization on a periodic basis, such asonce an hour, once a day, etc.).

Although FIG. 3 illustrates a synchronization of a grantor-sideoperation to the grantee-side, it is to be understood that this is forillustrative purposes only. If the second measurement system 320 hasread/write access to the shared data 340 and the event 306 is receivedat the second measurement system 320, then the message 308 may be sentin the opposite direction (e.g., the bit indicating whether user N madea purchase may have been modified at the second data storage 322 beforebeing modified at the first data storage 312).

FIG. 3 thus illustrates a system 300 that is operable to synchronizechanges to shared data, e.g., to a portion of a data structure, to otherlocations. Such synchronization may occur using a pull-based mechanismor a push-based mechanism. When the data being shared is associated withuser profiles, the system 300 may represent a networked customerrelationship management (CRM) system. To illustrate, the system 300 mayenable CRM systems associated with different entities to read, write,and share data regarding customers with each other.

FIG. 4 illustrates examples of relationships between entities that maygive rise to data sharing scenarios, as is generally designated 400. Afirst scenario 402 corresponds to parent-child data sharing. Forexample, Entity A may be a parent of Entities B, C, and D. Toillustrate, Entity A may be a conglomerate parent corporation thatincludes subsidiaries in various industries. In such a scenario, theparent corporation may have access to the user profile data, eventsignals, etc. stored in bitmap indexes and/or database tables associatedwith each of the child entities. Data rights definition(s) used toimplement the first scenario may list child entities B, C, and D asgrantors and parent Entity A as a grantee. The parent entity may or maynot have its own data, and if the parent entity has its own data, suchdata may or may not be shared with child entities. The child entitiesmay or may not share data with other child entities.

A second scenario 404 corresponds to a data sharing pool in whichvarious entities may pool shared data together. In some examples, somemembers of the data sharing pool may not contribute any data to thepool. To illustrate, in FIG. 4 , entities M, N, P, and Q may be realestate firms that have at least read-only access to some but not allproperty listings (e.g., those property listings that are at least amonth old) being offered by other real estate firms. Data rightsdefinition(s) used to implement the second scenario 404 may list all ofthe members of the pools as grantors and may additionally list thosemembers of the pool that are providing data as grantees.

A third scenario 406 corresponds to an ad hoc data sharing arrangementin which two or more entities share data with each other. The datasharing arrangement shown in FIG. 3 , for example, may be such an ad hocdata sharing arrangement. The data rights definition 200 of FIG. 2 is anexample of a data rights definition that may be used to implement an adhoc sharing arrangement between two entities. It is to be understood,however, that the various operations described with reference to FIGS.1-3 may be applicable in any of the scenarios 402-406.

As an example of an ad hoc data sharing arrangement, assume Entity X isan advertiser (e.g., a restaurant) and Entity Y is the owner of a newswebsite. A first group of users may be known to the restaurant but notto the news website. For example, the first group of users may includeusers that have dined at or ordered takeout/delivery meals from therestaurant, users that have interacted with the restaurant via a socialnetwork, etc. A second group of users may be known to the news websitebut not to the restaurant. For example, the second group of users mayinclude users that have registered at the news website, visited the newswebsite and performed one or more actions (e.g., read news articles,watched video clips, etc.), interacted with an owning entity of the newswebsite via a social network, etc. A third group of users may be knownto both the restaurant and the news website. For example, the thirdgroup of users may include users that have both dined at the restaurantas well as registered at the news website.

Now assume that the restaurant places an advertisement on the newswebsite. The restaurant may be interested in receiving information fromthe news website regarding users that viewed the advertisement, usersthe clicked on the advertisement, etc. To facilitate this, a datasharing agreement between the restaurant and the news website may be setup and embodied in a data rights definition. The data rights definitionmay list the news website as the grantor and the restaurant as thegrantee. The data rights definition may further indicate that therestaurant has read-only access to the rows of the bitmap index (i.e.,the segment/tile) corresponding to whether or not a user has viewed theadvertisement and whether or not the user clicked on the advertisement.The data rights definition may further indicate that personallyidentifiable information is not being shared with the restaurant unlessthe user whose information is being shared was previously known to boththe news website and the restaurant. To illustrate, the profile ID forthe a user known to both entities may be the same in the CRM data ateach of the entities, and personally identifiable information regardinga user of one entity may not be shared with the other entity unless theuser's profile ID already exists in the other entity's CRM system (or inthe other entity's bitmap index(es)).

Referring to FIG. 5 , a particular embodiment of a bitmap index 550 isshown. In an illustrative embodiment, the bitmap index 550 is the bitmapindex 126 of FIG. 1 . The bitmap index 550 may correspond to aparticular media property tracked by the measurement system 120 of FIG.1 . The bitmap index 550 stores a plurality of bit strings, whichcorrespond to rows, or portions thereof, in the bitmap index 550. Eachbit string represents a “tile,” which in the example of FIG. 5correspond to demographic signals, brand affinity signals, and/orbehavior signals exhibited by the audience members. For purposes ofillustration, the bitmap index 550 is shown as a grid, where each row504 of the bitmap index 550 corresponds to a bit string. In FIG. 5 , abit string count is shown for the brand affinity bit strings. Forexample, the bit string for “Coffee Shop A” has a total of 7, indicatingthat 7 audience members have a brand affinity for “Coffee Shop A.”

As described with reference to FIG. 1 , the same location in each bitstring may correspond to the same audience member (e.g., “profile” oruser ID). Thus, each column 502 of the bitmap index 550 corresponds to aparticular audience member. For example, a zero (0) at the intersectionof the row 504 and the column 502 indicates that the user having a userID equal to “Q” does not have an income in the range of$100,000-$110,000. It should be noted that the specific tiles shown inFIG. 5 for example only. Bit strings may be stored for more, fewer,and/or different tiles in alternative embodiments.

In a particular embodiment, each bit string in the bitmap index 550 issubdivided into “slices” (e.g., sub-strings). In the illustratedexample, each slice includes S bits, where S is a positive integer.Thus, a first slice 512 of each bit string includes data related toaudience members having IDs 0 to S−1. A last (e.g., X^(th)) slice 514includes data related to audience members having IDs (X−1)*S to Q. Whenbit strings are subdivided into slices, different slices of the same bitstring may be stored in different locations (e.g., storage nodes). Ahashing algorithm, such as consistent hashing, may be used (e.g., duringread operations, write operations, query execution, etc.) to identifylocations of the slices of a bit string. The value of S, whichrepresents the maximum length of each slice, may be set based on adesired query execution latency. In a particular embodiment, S is equalto 65,535 (e.g., each slice includes 2¹⁶ bits).

The bitmap index 550 may also include custom tile metadata 522 andcustom profile metadata 524. In an illustrative example, such metadata522, 524 is represented as <name, value> (“name-value”) pairs, as shownin FIG. 5 . As further described herein, when a query is executed on thebitmap index 550, the corresponding query results may include at least aportion of the metadata 522, 524. Moreover, as further described herein,in some embodiments, the custom tile metadata 522 and/or the customprofile metadata 524 may be used to store information regarding whetherand in what fashion the corresponding tile(s) and profile(s) of thebitmap index 550 are being shared with other entities.

FIG. 6 illustrates an embodiment of adding a new user 602 to the bitmapindex 550. In a particular embodiment, adding the new user 602 to thebitmap index 550 may involve a capture processor 604, an event processor606, a data store 608, and a database (e.g., an illustrative structuredquery language (SQL) database 610). In an illustrative embodiment, thecapture processor 604 and the event processor 606 correspond to the dataprocessing module 122 of FIG. 1 . The data store 608 and/or the SQLdatabase 610 may correspond to the cloud-based storage 140 of FIG. 1 .

During operation, the capture processor 604 may receive an event signalcorresponding to a new user registration event 603 for the user 602. Theevent signal indicates that the user 602 is to be assigned a new user IDand is a new user for the media property “Property 1.” The event signalalso indicates (e.g., on the basis of retrieved social networking dataand/or third-party data) that the user 602 is a male, has an income of$105,000, is single, and has an e-mail address of “john@site.com.” Inalternate embodiments, such information may be automatically retrievedby a measurement system after the new user registration event, asfurther described herein.

The capture processor 604 (which may implement a capture applicationprogramming interface (API)) may send the event signal to the eventprocessor 606. Because the user 602 is a new audience member, the eventprocessor 606 may generate and assign a new user ID to the user 602. Forexample, the event processor 606 may atomically increment a largestpreviously assigned user ID (e.g., Q) to generate a new user ID 614(e.g., Q+1). In a particular embodiment, the event processor 606requests the new user ID 614 from an atomic incrementer service (e.g., aweb service). The event processor 606 may then store data correspondingto the event signal in the data store 608, the SQL database 610, and/orthe bitmap index 550. For example, a new column 612 may be created inthe bitmap index by storing a new (Q+1)^(th) bit in each of the bitstrings in the bitmap index. When allocating and storing data in the(Q+1)^(th) column involves creating a new slice, the event processor 606may automatically generate a new slice for each bit string of the bitmapindex 550. The value of the (Q+41)^(th) bit in the “Male,” “Income[100-110 k],” and “Single” bit strings may be set to “1” based on theevent signal. The value of the (Q+1)^(th) bit in the remaining bitstrings may be zero (e.g., a default value). In addition, a new <name,value> pair may be set in the custom profile metadata 524 for e-mailaddress of the newly added audience member, as shown at 626. Inalternative embodiments, contact information other than or in additionto e-mail addresses may be included in the profile metadata 524.

In some examples, a data rights definition may automatically beestablished responsive to the new user registration event 603. Forexample, the data rights definition may list the user 602 as the grantorand “Property 1” (or an entity associated therewith) as the grantee. Thedata rights definition may indicate that whether the grantee hasread-only or read-write access to the user's profile data, a validitytime period for such rights, etc. In some examples, the data rightsdefinition includes a key that is to be provided in subsequent eventsignals, such as when additional information regarding the user isreceived, for authentication purposes. To illustrate, a key may begenerated for the user and may be provided to server(s) correspondingmedia properties, to servers corresponding to social networks, todevices associated with the user, etc., so that the key can be includedwhen subsequent event signals are generated. In some examples, the datarights definition may “inherit” restrictions based on the terms of useassociated with social networking websites or other data sources thatwere crawled to populate the bitmap index 550 for the user.

FIG. 7 illustrates a particular embodiment of updating the bitmap index550. During operation, the capture processor 604 may receive an eventsignal 703 corresponding to updated information for the user 602. In theillustrated example, the event signal 703 is generated based on the user602 making a purchase on the media property. The event processor 606 mayreceive the event signal 703 and determine which row(s) and column(s) ofthe bitmap index 550 are affected by the event signal 703. In theillustrated example, the event processor 606 determines that the eventsignal 703 will cause the value of the (Q+1)^(th) bit 712 of a“Purchase” bit string 714 to be set to “1.” The event processor 606 mayalso update the data store 608 and/or the SQL database 610 based on thereceived event signal 703. In some examples, the event signal 703 mayinclude a key that is compared with a data rights definition associatedwith the user, for authentication purposes, before the event processorupdates the data store 608, the SQL database 610, and/or the bitmapindex 550.

As described with reference to FIG. 1 , in some embodiments, the bitmapindex 550 includes bit strings for fewer than all of theattributes/tiles being tracked. For example, although all demographicand/or behavioral tiles may be stored in the bitmap index 550, bitstrings for only the top N brands may be included in the bitmap index550, where N is an integer greater than or equal to one. In suchembodiments, a received event signal may cause a particular tile tobecome elevated into or fall out of the top N tiles. FIG. 8 illustratesa particular embodiment of updating the bitmap index 550 responsive toan event signal.

For ease of illustration, the bitmap index 550 is depicted as storingthree brand affinity bit strings (i.e., N=3). Initially, the threebrands may be “Coffee Shop A,” “Store B,” and “Television Network C.”The brand affinity counts for the three brands are 7, 5, and 10 audiencemembers, respectively. Brand affinity data for additional brands (e.g.,brands outside the top N brands) may be stored in the data store 608.

A received event signal 803 may indicate that the user 602 has anaffinity for “Clothing brand D.” Upon receiving the event signal 803,the event processor 606 may determine that a brand affinity bit stringfor “Clothing Brand D” is not stored in the bitmap index 550. Thus, theevent processor 606 may store data for the event signal 703 in the datastore 608. The event processor 606 (or a background process or thread)may determine that because of the event signal 803. “Store B” (which hasa count of 5) has fallen outside of the top N brands and that “ClothingBrand D” (which now has a count of 6) has become elevated into the top Nbrands. In response to the determination, a bit string 810 for “Store B”(including any associated tile metadata 522) may be replaced in thebitmap index 550 with a bit string 812 for “Clothing Brand D” (alongwith any associated tile metadata 522, which in some examples mayinclude data rights information associated with the bit string for“Clothing Brand D,” i.e., whether and in what fashion user affinitiesfor “Clothing Brand D” is shared with other entities).

FIG. 9 illustrates a particular embodiment of executing (e.g.,resolving) a query 902 using the bitmap index 550. The query 902 may bereceived and executed by the query execution module 124 of FIG. 1 . Theresult of executing the query 902 is another bit string 914, referred toherein as a “filter string.” In the illustrated example, the query 902corresponds to an intersection (logical AND) operation between the“Male” and “Income [100-110 k]” demographic properties (i.e.,corresponds to the question “Which of my audience members is male andhas a household income between $100,000 and $110,000?”). Thus, thefilter string 914 may correspond to a custom segment of an audience of aparticular property that is associated with the bitmap index 550. Thecustom audience segment may correspond to an aggregation of audiencesegments generated using one or more set operations, such as logical ANDoperations and logical OR operations.

Resolving the query 902 may including ANDing each bit string location(i.e., each user) of a “Male” bit string 910 with a correspondinglocation of an “Income [$100-110 k]” bit string 912, as shown. When bothcorresponding locations contain a “1,” the corresponding location of thefilter string 914 is set to 1. At the conclusion of the AND operations,the filter string 914 corresponds to a custom audience segment of menwho earn $100,000-$110,000.

In a particular embodiment, the filter string 914 is stored andavailable for use during execution of subsequent queries. The filterstring 914 may also be used to query the data store 608 (e.g.,cloud-based storage) or the SQL database 610 (e.g., a user profiledatabase) regarding the custom audience segment. It should be noted thatwhile the illustrated query 902 calls for a single set operation togenerate the filter string 914, the described techniques may be usedwith more complex queries that involve any number of union operations,intersection operations, and/or count operations. For example, FIG. 10illustrates a particular embodiment of resolving a (more complex) secondquery 1002 to generate a second filter string 1016. In FIG. 10 , thequery 1002 is a top Z brand affinities query (where Z is a positiveinteger).

The query 1002 requests identification of audience members that are maleand that like “Coffee Shop A” or have made a purchase on the mediaproperty. The filter string 1016 may be generated by ORing a “CoffeeShop A” bit string 1012 with a “Purchase” bit string 1014 to generate anintermediate result string (not shown). The filter string 1016 may begenerated by ANDing the “Male” bit string 910 with the intermediateresult string. The audience members having a “1” in the filter string1016 represent the audience members who are male and either have a brandaffinity for “Coffee Shop A” or have made a purchase. In a particularembodiment, the filter string 1016 may be stored and used duringexecution of subsequent queries. For example, to answer the question“What are the top 50 brands for men in my audience that either have anaffinity for Coffee Shop A or have made a purchase” the filter string1016 may be generated. The filter string 1016 may be ANDed with each ofthe brand affinity bit strings to generate result strings. Countoperations may be performed on the result strings and the 50 brandaffinities with the highest counts may be returned in response to thequestion.

As another example, to answer the query “What are the e-mail addressesfor men in my audience that either have an affinity for Coffee Shop A orhave made a purchase.” after the filter string 1016 is generated, e-mailaddresses may be determined, based on the custom profile metadata 524,for each user whose corresponding value in the filter string is “1.” Toillustrate, because the user having the ID Q+1 has a value of “1” in thefilter string 1016, the e-mail address “john@site.com” is returned as aresult for the query. As another example, to answer the query “What datarights are established for men in my audience that either have anaffinity for Coffee Shop A or have made a purchase,” after the filterstring 1016 is generated, such data rights may be determined based oninformation stored in the custom profile metadata 524 for each userwhose corresponding value in the filter string is “1”.

It will be appreciated that during query execution, the AND/ORoperations performed on bit strings are performed one bit at a time, andthe result of an operation on any single bit location does not impactthe result of the operation on any other bit location. Thus, queryexecution may be parallelized. For example, when slices of the bitstrings are stored at different network nodes, performing an operationwith respect to bit strings may be parallelized into performing theoperation with respect to individual slices at individual nodes. Todetermine where and in what order such parallel operations should beperformed, a query execution module may generate a query execution plan.

For example, FIG. 11 illustrates a particular embodiment of generatingof a query execution plan 1104 to resolve the query 1002 of FIG. 10 .Upon receiving the query 1002, a query execution module 1106 maygenerate a query execution plan 1104. In a particular embodiment,because data transfers between nodes may represent a bottleneck, thequery execution plan 1104 may be generated such that data transfers arereduced/minimized. In a particular embodiment, the query executionmodule 1106 is part of one of the nodes 1108-1114. Alternately, thequery execution module 1106 may be part of a separate node (e.g., aload-balancing node).

For example, the query execution module 1106 may determine thatresolution of the query 1002 of FIG. 10 involves performing operationson the “Male” bit string, the “Coffee Shop A” bit string, and the“Purchase” bit string. In the illustrated example, each of the bitstrings has three slices. A first slice 1116 of the “Male” bit string,designated Male₁ is stored on Node A 1108. A Male₂ slice 1118 and aMale₃ slice 1120 are stored on Node B 1110. Coffee Shop A₁, Coffee ShopA₂, Coffee Shop A₃, and Purchase₃ slices 1122, 1124, 1126, and 1128 arestored on Node C 1112. Purchase₁ and Purchase₂ slices 1130 and 1132 arestored on Node D 1114.

In an illustrative embodiment, each slice corresponds to a data objectthat includes a bit array, an array of profile IDs corresponding to thebits in the bit array (or alternatively, a starting profile ID and anending profile ID), a tile ID, a slice ID, an array of <name, value>pairs for tile metadata (which may include <name, value> pairs regardingdata rights for various tiles), and an array of <name, value> pairs forprofile metadata (which may include <name, value> pairs regarding datarights for various user profiles). Thus, when the following descriptionrefers to copying or moving a slice, the various IDs and metadata storedin conjunction with the slice may also be copied or moved.

The query execution plan 1104 identifies operations and at what nodesare to perform the operations. For example, the query execution plan1104 indicates that in a first step, Node C 1112 is to perform a union(OR) operation between Coffee Shop A₁ slice 1126 and the Purchase₃ slice1128 to generate an intermediate result slice Union₃. In parallel. NodeA 1108 is to transfer a copy of the Male₁ slice 1116 to Node C 1112 andNode B 1110 is to transfer copies of the Male₂ slice 1118 and the Malesslice 1120 to Node C 1112. Node D is to transfer copies of the Purchase₁slice 1130 and the Purchase₂ slice 1132 to Node C 1112.

In a second step, Node C 1112 performs two operations in parallel: ORingthe Purchase₁ slice 1130 and the Coffee Shop A₁ slice 1122 to generatean intermediate result slice Union₁, and ORing the Purchase₂ slice 1132and the Coffee Shop A₂ slice 1124 to generate an intermediate resultslice Union₂.

In a third step, Node C 1112 performs three operations in parallel togenerate three intermediate bit strings. The first intermediate bitstring Result₁ is generated by ANDing the Union₁ slice with the Male₁slice. The second intermediate bit string Result₂ is generated by ANDingthe Union₂ slice with the Male₂ slice. The third intermediate bit stringResult is generated by ANDing the Union₃ slice with the Male₃ slice. Ina fourth step. Node C concatenates the Result₁, Result₂, and Result₃ bitstrings to generate the filter string 1016 of FIG. 10 .

FIG. 11 thus illustrates generation of a query execution plan for aquery. In a particular embodiment, the query execution plan is generatedprior to performing any set operations. The query execution plan may begenerated so as to increase the number of parallel operations and reducethe number of bit string (or slice) transfers between nodes, which mayresult in improved query execution latency.

In the foregoing description, bit strings are described as beingsubdivided into slices. For example, each slice may include 64 kibibits(1 kibibit=2¹⁰ bits=1,024 bits). In a particular embodiment, slices maybe further divided into “chunks.” For example, chunks may be up to 2kibibits in length (e.g., each slice is subdivided into 32 chunks). Toreduce the amount of space occupied by bit strings of a bitmap index,chunks may be stored in a compressed fashion. For example, FIG. 12illustrates a particular embodiment of compressing and storing data of abitmap index. In particular. FIG. 12 depicts Node A 1108 of FIG. 11 ,which stores the Male₁ slice 1116. The (bit array of) Male₁ slice 1116may be compressed in accordance with various compression schemes. In theillustrated compression scheme, chunks that have only zeroes are notstored. Chunks that include a one are stored. A flag corresponding toeach chunk is stored. If a flag has a value of zero, the correspondingchunk is stored in its entirety. For example, a first flag 1202 and athird flag 1208 have a value of zero, indicating that correspondingfirst chunk 1204 and third chunk 1210 are stored at Node A 1108. If aflag has a value of one, the corresponding chunk is “compressed” by notbeing stored. For example, a second flag 1206 has a value of one,indicating that a corresponding second chunk includes only zeroes and isnot stored. During queries, the second chunk may be dynamicallygenerated by introducing zeroes (e.g., 2,048 zeroes) between the firstchunk 1204 and the third chunk 1210.

While FIG. 12 illustrates one example of a compression scheme, inalternate embodiments, different compression schemes may be used.Further, data for the compression scheme may be stored in differentplaces. For example, the chunks 1204 and 1210 may be stored at Node A1108, and the flags 1202, 1206, and 1208 may be stored in a differentlocation (e.g., as part of a hash table that is used to identify whereslices/chunks of a bit sting are stored).

FIG. 13 illustrates an example in which the bitmap index 550 isthree-multidimensional and includes internal storage of data rightsinformation. To illustrate, the values at each X,Y coordinate of aTable_0 of the bitmap index 550, corresponding to Z=0, may be based onreceived event signals, as described with reference to FIGS. 1-8 . Thatis. Table_0 may represent the “actual” data values of the bitmap index550. The remaining tables of the bitmap index, such as Table_i for Z=i,indicate whether each bit in the Table_0 is shared with a correspondingdata rights grantee. For example, the values stored in the top row andthe right-most column of Table_i in FIG. 13 are “1”s. Accordingly, thevalues in the “Male” bit string and for the user represented by theright-most column of Table_0 may be shared with an entity correspondingto Table_i. Similarly, values stored in the bitmap index 550 withintables for other non-zero values of Z may indicate whether data inTable_0 is shared with other entities.

In some examples, the custom tile metadata 522 and/or the custom profilemetadata 524 stored in the bitmap index 550 for non-zero values of Z mayinclude additional data rights information. For example, the custom tilemetadata 522 and/or the custom profile metadata 524 may indicate whetherread-only access or read-write access is being granted, a data sharingvalidity time period, and/or a key that is to be provided by the granteein access requests for the shared data stored in the bitmap index 550.

When an access request is received by a computing device that stores orthat has access to the multidimensional bitmap index 550, the computingdevice may determine whether the requestor has been granted any datarights for the bitmap index 550, i.e., a table for a non-zero value of Zcorresponds to the requestor. If so, the computing device may examinethe table to compare a key included in the access request to a keyincluded in the table. If the keys match and the table further indicatesthat the requestor has access to the X,Y coordinates specified in therequest, the computing device may grant the requestor access to the datastored at the specified X,Y coordinates in Table_0. FIG. 13 thusillustrates an example in which a data rights definition that enablesselective sharing of a bitmap index (or a portion thereof) is integratedinto the bitmap index itself.

FIG. 13 also illustrates an example of storing multiple sortablemetadata items in the bitmap index 550. In particular, the custom tilemetadata 522 includes a count 1302, a count sort index 1304, and auniverse index 1300 for each bit string 1304. Thus, in a particularembodiment, if slices of a bit string are stored in distributed fashion,then data regarding the count 1302, the count sort index, and theuniverse index 1306 may be stored along with each slice.

In accordance with the present disclosure, multiple sortable metadataitems may be included in the bitmap index 550. In the example of FIG. 13, the count 1302 corresponds to the count of “1” values in each bitstring. In some examples, the count 1302 for an individual slice may bethe count of “1” values in the slice rather than the bit string as awhole. Alternatively, the total count 1302 may be stored along with eachslice. The count sort index 1304 may enable the bitmap index 550 to bequickly sorted by the count 1302. When the bitmap index 550 is sorted bythe count 1302, the bit strings for “Income 100-110 k” and “TV NetworkC” will rise to the top; therefore those bit strings have count sortindexes of 1. Adding sort indexes to the bitmap index 550 may enable thebitmap index to function as a cache that is concurrently sorted bymultiple individual, custom sorting parameters (e.g., count, universalindex, etc.). As data in the bitmap index changes, the sort indexes canbe updated without having to relocate bit strings higher or lower withinthe bitmap index.

In an illustrative embodiment, the universe index 1306 is based on acomparison of a popularity of a tile with respect to a media property(e.g., website) and a popularity of the tile with respect to a largermeasurement universe that includes multiple media properties (e.g.,websites). To illustrate, a measurement system, such as the measurementsystem 120 of FIG. 1 , may collect data regarding audiences of a largenumber of media properties. If a media property owner opts-in toaggregate data metrics, then the universe index 1306 may be generated inthe bitmap index for the media property. In the example of FIG. 13 , auniverse index of 100 indicates that the corresponding tile is equallypopular in the measurement universe as it is for the individual mediaproperty. If the tile is less popular for the media property than forthe measurement universe, the universe index has a value of less than100. If the tile is more popular for the media property than for themeasurement universe, the universe index has a value of more than 100.In the illustrated example, “Store B” has a relatively low count of 5but a large universe index of 415, indicating that the media propertyhas a much larger proportion of “Store B” fans than the measurementuniverse as a whole. Based on this information, the owner of the mediaproperty may tailor content and/or marketing campaigns with informationrelated to “Store B.” in the hopes of turning their media property intoa “go-to” Internet location for information about “Store B.”

Although not shown in FIG. 13 , it is to be understood that variousother types of tile and/or profile metadata may be stored in the bitmapindex 550. For example, the bitmap index 550 includes a category for bitstrings. To illustrate, each of multiple brands of beer, wine, andspirts may have “alcoholic beverages” listed as a category. The categorymetadata may enable determining a custom composite segment that includeseach of the beer, wine, and spirt brands. For example, althoughindividual brands may have low counts, the custom segment for alcoholicbeverages may have a large enough count to warrant marketing attention.Such category metadata may also enable querying the bitmap index 550using “alcoholic beverage” rather than having to OR together individualbeer, wine, and spirit brands.

As described above, a data rights definition may, in some aspects, mayrepresentative of or may be considered as an agreement between a grantorand a grantee. In a particular embodiment, such agreements may beprocessed to determine a monetary value of the agreements. Toillustrate, the monetary value of a data rights definition may be afunction of one or more properties associated with the grantor (e.g.,grantor market cap, grantor reputation or influence, number of socialnetwork followers, etc.), one or more properties associated with thegrantee (e.g., grantee market cap, grantee reputation, number of socialnetwork followers, etc.), one or more properties of the data beingshared (e.g., number of tiles/segments being shared, number of userprofiles being shared, etc.), whether the sharing provides for read-onlyor read-write access, whether personally identifiable information isbeing shared, the duration that the data rights definition is valid,etc. By determining a monetary values associated with the data rightsdefinitions, an entity may be able to determine reasonable fees to bepaid/collected for data sharing, a payment to pay to a user toincentivize the user to grant access rights to their profileinformation, etc.

Referring to FIG. 14 , a particular embodiment of a method 1400 ofoperation is shown. In an illustrative embodiment, the method 1400 maybe performed by a computing device having a processor, such as acomputing device included in the measurement system 120 of FIG. 1 .

The method 1400 includes receiving an access request at a firstcomputing device from a second computing device, at 1402. The accessrequest specifies a data structure, where the data structure includesfirst data stored in a first portion of the data structure and seconddata stored in a second portion of the data structure. For example, inFIG. 3 , the first measurement system 310 may receive the access request302 from the second measurement system 320, where the access requestspecifies the shared data 340.

The method 1400 also includes extracting a first key from the accessrequest, at 1404, and identifying a data rights definition that isassociated with the data structure, at 1406. The data rights definitionis further associated with a second key and indicates that the firstdata is shared with an entity associated with the second computingdevice. For example, in FIG. 3 , the first measurement system 310 may,extract a key from the received access request 302 and may identify adata rights definition associated with the shared data 340, where thedata rights definition includes a second key. For example, the firstmeasurement system 310 may search a repository of data rightsdefinitions for data rights definition(s) that list the entityassociated with the second computing device as a grantee, that lists theparticular data structure or portion thereof specified in the accessrequest 302, etc. In some examples, the data rights definition may bestored as a part of the data structure that includes the shared data, asdescribed with reference to FIG. 13 .

The method 1400 further includes comparing the first key to the secondkey, at 1408, and, based on the comparison, determining whether to grantthe second computing device access to the first data but not the seconddata. When the first key “matches” the second key (e.g., the keys areidentical or can be mathematically verified, as in public/private keypairs), the method 1400 includes granting the second computing deviceaccess to the first data but not the second data, at 1410. For example,in FIG. 3 , the first measurement system 310 may send the copy 304 ofthe shared data 340 to the second measurement system. Conversely, whenthe first key does not “match” the second key, the method 1400 includesdenying the access request, at 1412.

In some examples, granting the second computing device access to thefirst data includes sending a copy of the first data to the secondcomputing device for storage in a second data structure at the secondcomputing device. Thus, in particular embodiments a portion of one ormore of the data structures described herein (e.g., the bitmap indexes126, 132, 134 of FIG. 1 , the bitmap index 550 of FIG. 5 , etc.) maystore a copy of data that has been received from a grantor based on adata rights definition. In such examples, the copy of the data may besynchronized with the “master” copy at the grantor. For example, themethod 1400 may include receiving a write operation with respect to thefirst data, performing the w-rite operation on the first data, andcausing the write operation to be replicated at the copy of the firstdata in the second data structure, at 1414. To illustrate, referring toFIG. 3 , the first measurement system 310 may receive the event signal306, modify bit(s) of the bitmap index stored in the first data storage312 in response to the event signal 306, and send the message 308causing the write operation to be replicated at the bitmap index storedin the second data storage 322. Synchronization of shared data may beperformed responsive to a push synchronization operation initiated bythe first measurement system 310 or responsive to a pull synchronizationoperation initiated by the second measurement system 320 (e.g., inresponse to the synchronization request 309).

The bitmap index described herein may thus enable a measurement system,such as the measurement system 120, to quickly provide analysis for“raw” data stored in an offsite (e.g., cloud-based) storage location.The bitmap index may represent an on-the-fly index of binaryrepresentations of different audience traits that can be mined todetermine what set of audience members is most likely to be receptive toparticular content, a particular advertisement, etc. Audience traits maybe combined into long bit strings, where each bit string represents asingle trait for an entire audience. By keeping the bitmap index “hot”in memory, ad-hoc queries may be performed efficiently and with reducedlatency, and the results of such queries can include metadata regardingthe audience traits and/or audience members. Moreover, all or a portionof the bitmap index may be shared with other entities in accordance withpreviously established data rights definitions. The described techniquesmay also be used with other types of systems. For example, in alternateembodiments, the same location in each bit string of the bitmap indexmay correspond to an identifier other than a user ID, such as aninventory number, an employee number, a hospital patient identifier,etc. In some examples, the bitmap index includes a plurality of bitstrings, where a value stored in a particular location in each of thebit strings indicates whether a corresponding signal associated with asignal source has been received. As illustrative non-limiting examples,a signal source may include a user, a computing device associated withthe user, or a computing device not associated with any user (e.g., anIoT device). FIGS. 15 and 16 illustrate additional scenarios in which abitmap index may be generated and used.

In particular, FIG. 15 illustrates an alternate embodiment of ameasurement system and is generally designated 1500. A measurementsystem 1540 may be communicatively coupled to one or more user devices(e.g., illustrative user devices 1512, 1514, and 1516), to one or morecontent delivery networks (CDNs) (e.g., illustrative CDN 1522), and toproperties (e.g., websites) 1532 and 1534. In FIG. 15 , the properties1532 and 1534 are illustrated by corresponding servers (e.g., webservers). The measurement system 1540 may be implemented using one ormore computing devices (e.g., servers). For example, such computingdevices may include one or more processors or processing logic,memories, and network interfaces. The memories may include instructionsexecutable by the processors to perform various functions describedherein. The network interfaces may include wired and/or wirelessinterfaces operable to enable communication to local area networksand/or wide area networks (e.g., the Internet).

The user devices 1512-1516 may be associated with various users. Forexample, the desktop computing device 1512 and the tablet computingdevice 1514 may be associated with a first user 1502, and the mobiletelephone device (e.g., smartphone) 1516 may be associated with a seconduser 1504. It should be noted that the user devices 1512-1516 are shownfor example only and are not to be considered limiting. In alternateembodiments, fewer, additional, and/or different types of user devicesmay be present in the system 1500. For example, a radio-frequencyidentification (RFID)-enabled device may be carried by a user and maytransmit a signal in response to detecting that the user is visiting aparticular physical location. In a particular embodiment, the userdevices 1512-1516 may execute applications that are operable to accessthe properties 1532 and 1534. For example, the user devices 1512-1516may include applications developed using a mobile software developmentkit (SDK) that includes support for audience measurement functions. Toillustrate, when the SDK-based applications interact with the properties1532 and 1534, the applications may generate first event signals 1510that are transmitted by the user devices 1512-1516 to the measurementsystem 1540.

The first event signals 1510 may include information identifyingspecific interactions by the users 1502-1504 via the user devices1512-1516 (e.g., what action was taken at a media property, when theaction was taken, for how long the action was taken, etc.). The userinteractions may include interactions with advertisements presented bythe media property and/or interactions with content presented by themedia property. The event signals 1510 may also include an identifier,such as a browser identifier (browser ID) generated by the SDK. In aparticular embodiment, browser identifiers are unique across softwareinstallations and devices. For example, a first installation of aSDK-based application at the desktop computing device 1512 and a secondinstallation of the same SDK-based application at the tablet computingdevice 1514 may use different browser IDs, even though bothinstallations are associated with the same user 1502.

In another particular embodiment, Browser IDs may remain consistentuntil applications or web browsers are “reset” (e.g., caches/cookies arecleared). In some embodiments, the user devices 1512-1516 may executeapplications other than browser applications, such as downloadablemobile applications, that generate the event signals 1510 based on userinteractions with advertisements and/or content presented by theapplications.

The user devices 1512-1516 may access content provided by the properties1532 and 1534 directly or via the CDN 1522. The CDN 1522 may providedistributed, load-balanced access to audio, video, graphics, and webpages associated with the media properties 1532 and 1534. For example,the CDN 1522 may include geographically distributed web servers andmedia servers that serve Internet content in a load-balanced fashion.The CDN 1522 may send second event signals 1520 to the measurementsystem 1540. The second event signals 1520 may include informationidentifying interactions with media properties and browser IDs providedto the CDN 1522 by the user devices 1512-1516 and/or the properties 1532and 1534. For example, the second event signals 1520 may include CDNlogs or data from CDN logs.

The media properties 1532 and 1534 may be controlled by the same entity(e.g., may be part of a federated property) or by different entities.The properties 1532 and 1534 may send third event signals 1530 to themeasurement system 1540. The third event signals 1530 may includeinformation identifying interactions with the media properties andbrowser IDs provided by the user devices 1512-1516 during communicationwith the properties 1532 and 1534 (e.g., communication via hypertexttransfer protocol (HTTP), transport control protocol/internet protocol(TCP/IP), or other network protocols).

In a particular embodiment, the third event signals 1530 may includeserver logs or data from server logs. Alternately, or in addition, thethird event signals 1530 may be generated by SDK-based (e.g., webSDK-based) applications executing at the properties 1532 and 1534, suchas scripts embedded into web pages hosted by the properties 1532 and1534.

The first event signals 1510 from the user devices 1512-1516 and thesecond event signals 1520 generated by the CDN 1522 may be considered“first-party” event signals. The third event signals 1530 from theproperties 1532 and 1534 may be considered “third-party” event signals.First party event signals may be considered more trustworthy andreliable than third party event signals, because of the possibility thatthird party event signals could be modified by a media property ownerprior to transmission to the measurement system 1540.

In a particular embodiment, the properties 1532 and 1534 may send datato the measurement system 1540 and receive data from the measurementsystem 1540 regarding advertisements and/or content presented by theproperties 1532 and 1534. Such communication is illustrated in FIG. 15as advertisement/content communication 1560. For example, anadvertisement (or software associated with the advertisement that isexecuting on a client device, such as web server, a computer, a mobilephone, a tablet device, etc.) may collect and transmit data on aper-advertisement, per-user basis. The data may include or identify aprofile of a user, a duration that the user viewed the advertisement,action(s) performed by the user with respect to the advertisement, etc.As another example, a content item or software associated therewith maycollect and transmit data regarding user interactions with the contentitem.

In a particular embodiment, the measurement system 1540 includes a datafiltering module 1542, a data processing module 1544, a data reportingmodule 1346, and a query execution module 1547. In a particularembodiment, each of the modules 1542-1547 is implemented usinginstructions executable by one or more processors at the measurementsystem 1540.

The data filtering module 1542 may receive the event signals 1510, 1520,and 1530. The data filtering module 1542 may check the event signals1510, 1520, and 1530 for errors and may perform data cleanup operationswhen errors are found. The data filtering module 1542 may also receiveand perform cleanup operations on advertisement measurement data andcontent measurement data received from the properties 1532 and 1534 andfrom applications executing on the user devices 1512-1516. In aparticular embodiment, the data filtering module 1542 may implementvarious application programming interfaces (APIs) for event signalcollection and inspection. The data filtering module 1542 may storeauthenticated/verified event signals in a database, event cache,archive, and/or cloud storage 1552. In a particular embodiment, themeasurement system 1540 includes or has access to a brand database thattracks brands. For example, “raw” data corresponding to the branddatabase and other collected data may be stored in the cloud storage1552. Signals received from the properties 1532 and 1534 and fromapplications executing the user devices 1512-1516 may identify a brandthat matches one of the brands in the brand database. The measurementsystem 1540 may thus track advertisements/content for various brandsacross multiple properties.

The data processing module 1544 may operate as described with referenceto the data processing module 152 of FIG. 1 . Alternately, or inaddition, the data processing module 1544 may associate received eventsignals (and interactions represented thereby) with user profiles ofusers. For example, when an event signal having a particular browser IDis a social networking registration event (e.g., when a user logs into awebsite using a Facebooks) account, a Twitter, account, a LinkedIn®account, or some other social networking account), the data processingmodule 1544 may retrieve a corresponding social networking profile orother user profile data from third party data sources 1550. Facebook isa registered trademark of Facebook, Inc. of Menlo Park, Calif. Twitteris a registered trademark of Twitter, Inc. of San Francisco, Calif.LinkedIn is a registered trademark of LinkedIn Corp, of Mountain View,Calif.

It will be appreciated that interactions that were previously associatedonly with the particular browser ID (i.e., “impersonal” alphanumericdata) may be associated with an actual person (e.g., John Smith) afterretrieval of the social networking profile or user profile. Associatinginteractions with individuals may enable qualitative analysis of theaudiences of media properties. For example, if John Smith is a fan of aparticular sports team, the measurement system 1540 may indicate that atleast one member of the audience of the first property 1532 or thesecond property 1534 is a fan of the particular sports team. When alarge percentage of a media property's audience shares a particularcharacteristic or interest, the media property may use such informationin selecting and/or generating advertising or content. User profiles(e.g., a profile of the user John Smith) and audience profiles (e.g.,profiles for the media properties associated with the properties 1532and 1534) may be stored in the cloud storage 1552 and/or in anotherdatabase. An audience profile for a particular media property may begenerated by aggregating the user profiles of the individual users(e.g., including John Smith) that interacted with the particular mediaproperty.

Audience profiles may be generated using as few as one or two userprofiles, although any number of user profiles may be aggregated. In aparticular embodiment, audience profiles may be updated periodically(e.g., nightly, weekly, monthly, etc.), in response to receiving updateddata for one or more users in the audience, in response to receiving arequest for audience profile data, or any combination thereof. Audienceprofiles may similarly be generated for audiences of a particular mobileapplication based on signals generated by installations of the mobileapplication on various user devices.

The data reporting module 1546 may generate various interfaces. The datareporting module 1546 may also support an application programminginterface (API) that enables external devices to view and analyze datacollected and stored by the measurement system 1540. In a particularembodiment, the data reporting module 1546 is configured to segment thedata.

As used herein, a “segment” is based on a group of people (e.g., anaudience or a subset thereof). As further described herein, a digitalgenome may be determined for each segment. Examples of segments include,but are not limited to, brand affinity segments (also called brandsegments), demographic segments, geographic segments, social activitysegments, employer segments, educational institution segments,professional group segments, industry category of employer segments,brand affinity category segments, professional skills segments, jobtitle segments, and behavioral segments. In a particular embodiment,behavioral segments are defined by a client (e.g., property owner orpublisher) or by the measurement system 1540, and represent actionstaken on a client's property.

Additional examples of segments include segments based on anadvertisement, an advertisement campaign, an advertisement placement, anadvertisement context, a content item, a content context, contentplacement, a platform (e.g., desktop/laptop computer vs, mobile phonevs, tablet computer), etc. Segments may be used to understand orevaluate characteristics of an audience, craft a content strategy,generate advertising leads, create advertising pitches, and respond toinbound advertising requests. Segments may also be used to acquireadditional audience members, receive information fromadvertisements/content items, and send information toadvertisements/content items. In a particular embodiment, themeasurement system 1540 may be operable to define “new” segments basedon performing logical operations (e.g., logical OR operations andlogical AND operations).

The measurement system 1540 may also include a bitmap index 1548 (e.g.,the bitmap index 126 of FIG. 1 and/or the bitmap index 550 of FIG. 5 ).The bitmap index 1548 may store bit strings corresponding to at least asubset of the “raw” data stored in the cloud storage 1552. In oneexample, a different bitmap index 1548 is maintained for each property1532, 1534. The bitmap index 1548 for a particular property may include,for each audience member of the property, data regarding a demographicattribute of the audience member, a brand affinity of the audiencemember, and/or behaviors (e.g., interactions with the media property) ofthe audience member. The same location in each bit string of the bitmapindex 1548 may correspond to the same user.

The data processing module 1544 may also be configured to, uponreceiving an event signal, parse the event signal to identify what userand media property the event signal corresponds to. The data processingmodule 1544 may store data corresponding to the event signal in one ormore databases (e.g., the cloud storage 1552, a user profile database,etc.). The data processing module 1544 may also store indexing datacorresponding to the event signal in the bitmap index 1548 for theidentified media property. If the user is a new audience member for themedia property, the data processing module 1544 may assign a new ID tothe user. Event signals may be processed as described above withreference to FIGS. 1-12 .

The query execution module 1547 may operate as described with referenceto the query execution module 124 of FIG. 1 and/or the query executionmodule 1106 of FIG. 11 . For example, the query execution module 1547may receive a query and generate a query execution plan thatparallelizes execution and reduces/minimizes data transfers betweenstorage nodes during query execution.

During operation, the users 1502-1504 may interact with the mediaproperties 1532 and 1534 and with applications executing on the userdevices 1512-1516. In response to the interactions, the measurementsystem 1540 may receive the event signals 1510, 1520, 1530, and/or 1560.Each event signal may include a unique identifier, such as a browser IDand/or an audience member ID. If the user is a “new” audience member,the data processing module 1544 may create a user profile. Data for theuser profile may be stored in the cloud storage 1552 and/or the bitmapindex 1548. In a particular embodiment, data for the user profile may beretrieved from the third party data sources 1550.

For example, the data processing module 1544 may retrieve and store datafrom one or more social network profiles of the user. The data mayinclude demographic information associated with the user (e.g., a name,an age, a geographic location, a marital/family status, a homeownerstatus, etc.), social information associated with the user (e.g., socialnetworking activity of the user, social networkingfriends/likes/interests of the user, etc.), and other types of data. Thedata processing module 1544 may also collect and store data associatedwith advertisements and content served by the properties 1532 and 1534and by applications executing on the user devices 1512-1516. In aparticular embodiment, the measurement system 1540 is further configuredto receive offline data from external data sources. For example, themeasurement system 1540 may receive data regarding transactions (e.g.,purchases) made by an audience and may use the transaction data togenerate additional signals that contribute to the digital genome of anaudience, brand, property, etc. Another example of offline data may be a“data dump” of data collected by an RFID-enabled device or an RFIDdetector. Offline data may be stored in one or more computer-readablefiles that are provided to the measurement system 1540. In a particularembodiment, offline data can include previously collected data regardingusers or audience members (e.g., names, addresses, etc.).

The data reporting module 1546 may report data collected by themeasurement system 1340. For example, the data reporting module 1546 maygenerate reports based on an audience profile of a media property (orapplication), where the audience profile is based on aggregating userprofiles of users that interacted with the media property (orapplication). To illustrate, the data reporting module 1546 may generatean interface indicating demographic attributes of the audience as awhole (e.g., a percentage of audience members that are male or female,percentages of audience members in various age brackets, percentages ofaudience members in various income bracket, most common audience membercities/states of residence, etc.). The interface may also indicatesocial attributes of the audience as a whole (e.g., the most popularmovies, sports teams, etc. amongst members of the audience). Audienceprofiles may also be segmented and/or aggregated with other audienceprofiles, as further described herein. Audience profiles may further besegmented based on advertisement, advertisement campaign, brand, contentitem, etc. Audience profiles may also be constructed by combiningsegments, as further described herein.

In a particular embodiment, the system 1500 may also receive eventsignals based on measurements (e.g., hardware measurements) made at adevice. For example, an event signal from the tablet computing device1514 or the mobile telephone device 1516 may include data associatedwith a hardware measurement at the tablet computing device 1514 or themobile telephone device 1516, such as an accelerometer or gyroscopemeasurement indicating an orientation, a tilt, a movement direction,and/or a movement velocity of the tablet computing device 1514 or themobile telephone device 1516. As another example, the system 1500 mayreceive a signal in response to an RFID device detecting that a user isvisiting a particular physical location. The system 1500 of FIG. 15 mayalso link interactions with user profiles of users. This may provideinformation of “how many” viewers and “how long” the viewers watched aparticular video (e.g., as in direct response measurement systems), andalso ‘who’ watched the particular video (e.g., demographic, social, andbehavioral attributes of the viewers).

The system 1500 of FIG. 15 may thus enable audience measurement andanalysis based on data (e.g., event signals) received from varioussources. Further, the system 1500 of FIG. 15 may enable real-time ornear-real time execution of queries on collected data, such as executionof “top N” queries using the bitmap index 1548.

FIG. 16A illustrates another particular embodiment of a system 160) thatis operable to generate and use a bitmap index. The system 1600 includesa data collection tier (e.g., subsystem) 1610, an event processing tier1650, and a monitoring tier 1670. Components of the data collection tier1610 are illustrated in further detail in FIG. 16B. Components of theevent processing tier 1650 are illustrated in further detail in FIG.16C. Components of the monitoring tier are illustrated in further detailin FIG. 16D.

The system 1600 includes (or has access to) an authentication provider1632, third party data sources 1634, an audience web application 1646, afirst framework 1644, a second framework 142, a database 1648, aninterrogator 1638, a data store 1636, and a bitmap index 1640. In anillustrative embodiment, the third party data sources 1634 are the thirdparty data sources 1550 of FIG. 15 , the event processing tier 1650 andthe interrogator 1638 correspond to the data processing module 1544 ofFIG. 15 , and the bitmap index 1640 is the bitmap index 1548 of FIG. 15.

The data collection tier 1610 includes a content management system (CMS)1612, cloud storage 1616, content delivery networks 1618, clientbrowsers 1620, and client servers 1622. The data collection tier 1610may further include an application programming interface (API) 1621. TheAPI 1621 includes a load balancer 1624, capture servers 1626, and cloudstorage 1630.

The event processing tier 1650 includes a job queues module 1651, ananonymous buffer 1660, and an event bundle buffer 1662. The job queuesmodule 1651 includes an authentication token handler 1652, an eventdispatch 1656, and an event bundle handler 1658. In alternateembodiments, the job queues module 1651 may include more, fewer, and/ordifferent handlers than illustrated in FIG. 16 .

The monitoring tier 1670 includes an internal monitoring module 1672, aping monitor 1684, and a notifications module 1682. The internalmonitoring module 1672 includes a penetration monitor 1674, aperformance analysis module 1676, a system monitor 1678, and an alertrules module 1680.

During operation, the content management system 1612 may be used togenerate a client specific script (e.g., webscript) 1614 for variousclients (e.g., media properties). The client specific script 1614 may bestored in the cloud storage 1616 and replicated to the content deliverynetworks 1618. As audience members register and interact with a mediaproperty, the content delivery networks 1618 may deliver the clientspecific script 1614, along with property content, to the clientbrowsers 1620. Based on the client specific script 1614, the clientbrowsers 1620 may generate tags (e.g., a tag corresponding to aparticular user activity, such as watching a video) or tokens (e.g., asocial networking registration token). The tags or tokens may be sent tothe load balancer 1624. The client servers 1622 may also generate tagsor tokens to send to the load balancer 1624 based on user registrationsand user activity at media properties. The tags or tokens from theclient servers 1622 may be authenticated by the authentication provider1632.

The load balancer 1624 may send the tags or tokens to the captureservers 1626 based on a load balancing algorithm. The capture servers1626 may generate event data (e.g., event signals) based on the tags ortokens. The capture servers 1626 may store the event data in event logs1628 in the cloud storage 1630 and send the event data to the job queuesmodule 1651.

The job queues module 1651 may distribute the event data to differentevent handler(s) based on the type of the event data. For example, eventdata including an authentication token may be sent to the authenticationtoken handier 1652. In addition, event data requiring additionalinformation from social media sources may be sent to the authenticationtoken handler 1652. The handler 1652 may perform asynchronous eventcollection operations based on the received event data. For example,when a new user registers with a media property using a socialnetworking profile, a token may be provided by the data collection tierto the authentication token handler 1652. The handler 1652 may use thetoken to retrieve demographic and brand affinity data for the user fromthe user's social networking profile.

Event signals may also be sent to the event dispatch 1656, whichdetermines whether the event signals corresponds to known or unknownusers. When event data corresponds to an unknown user, the eventdispatch 1656 buffers the event data in the anonymous buffer 1660. Aftera period of time (e.g., three days), event data from the anonymousbuffer 1660 may be sent to the job queues module 1651 to be processedagain.

When event data corresponds to a “known” user (e.g., a user that hasalready been assigned a user ID), the event dispatch 1656 may send theevent data to the event bundles buffer 1662. The event bundle handler1658 may retrieve event data stored in the event bundles buffer 1662every bundling period (e.g., one hour). The event bundle handler 1658may bundle event data received each bundling period into an event bundlethat is sent to the interrogator 1638.

The interrogator 1638 may parse the event bundle and update the datastore 1636, the SQL database 1648, and/or the bitmap index 1640. Forexample, the interrogator 1638 may perform bitmap index generation andupdate operations as described herein. In a particular embodiment, thedatabase 1648 corresponds to a profiles database that is accessible thefirst framework 1644 to the audience web application 1646. For example,the first framework 1644 may be a database-driven framework that isoperable to dynamically generate webpages based on data in the database1648. The audience web application may be operable to generate variousgraphical user interfaces to analyze the data collected by the system1600. The bitmap index 1640 may be accessible to the audience webapplication 1646 via the second framework 1642. In one example, thesecond framework 1642 supports representational state transfer(REST)-based data access and webpage navigation. Although not shown, inparticular embodiments, the data store 1636 may also be accessible tothe audience web application 1646.

The monitoring tier 1670 may monitor the various components of thesystem 1600 during operation to detect errors, bottlenecks, networkintrusions, and other issues. For example, the penetration monitor 1674my collect data indicating unauthorized access to or from the captureservers 1626 and the first framework 1644. The penetration monitor 1674may provide the data to the alert rules module 1680. Similarly, thesystem monitor 1678 may collect performance data from the captureservers 1626, from the second framework 1642, and from the data store1636. The system monitor 1678 may provide the performance data to theperformance analysis module 1676, which may analyze the data and sendthe analyzed data to the alert rules module 1680. The alert rules module1680 may compare received data to alert rules and, based on thecomparison send an alert to the notifications module 1682. For example,the alert rules module 1680 may determine that an intruder has accessedcomponents of the system 1600 or that the system 1600 is not operatingat a desired level of efficiency, and may send an alert to thenotifications module 1682.

The notifications module 1682 may also receive alerts from the pingmonitor 1684. The ping monitor 1684 may monitor the load balancer 1624and the audience web application 1646 and collect data regarding uptime,downtime, and performance, and provide alerts to the notification module1682.

The notification module 1682 may send notifications (e.g., via shortmessage service (SMS), e-mail, instant messaging, paging, etc.) to oneor more technical support staff members 1664 to enable timely responsein the event of errors, performance bottlenecks, network intrusion, etc.

In accordance with various embodiments of the present disclosure, themethods, functions, and modules described herein may be implemented bysoftware programs executable by a computer system. Further, in anexemplary embodiment, implementations can include distributedprocessing, component/object distributed processing, and parallelprocessing. Alternatively, virtual computer system processing can beconstructed to implement one or more of the methods or functionality asdescribed herein.

Particular embodiments can be implemented using a computer systemexecuting a set of instructions that cause the computer system toperform any one or more of the methods or computer-based functionsdisclosed herein. A computer system may include a laptop computer, adesktop computer, a mobile phone, a tablet computer, a set-top box, amedia player, or any combination thereof. The computer system may beconnected, e.g., using a network, to other computer systems orperipheral devices. For example, the computer system or componentsthereof can include or be included within any one or more devices,modules, and/or components illustrated in FIGS. 1-16 . In a networkeddeployment, the computer system may operate in the capacity of a serveror as a client user computer in a server-client user networkenvironment, or as a peer computer system in a peer-to-peer (ordistributed) network environment. The term “system” can include anycollection of systems or sub-systems that individually or jointlyexecute a set, or multiple sets, of instructions to perform one or morecomputer functions.

In a particular embodiment, the instructions can be embodied in acomputer-readable or a processor-readable device. The terms“computer-readable device” and “processor-readable device” include asingle storage device or multiple storage devices, such as a centralizedor distributed database, and/or associated caches and servers that storeone or more sets of instructions. The terms “computer-readable device”and “processor-readable device” also include any device that is capableof storing a set of instructions for execution by a processor or thatcause a computer system to perform any one or more of the methods oroperations disclosed herein. For example, a computer-readable orprocessor-readable device or storage device may include random accessmemory (RAM), flash memory, read-only memory (ROM), programmableread-only memory (PROM), erasable programmable read-only memory (EPROM),electrically erasable programmable read-only memory (EEPROM), registers,a hard disk, a removable disk, a disc-based memory (e.g., compact discread-only memory (CD-ROM)), or any other form of storage device. Acomputer-readable or processor-readable device is not a signal.

The illustrations of the embodiments described herein are intended toprovide a general understanding of the structure of the variousembodiments. The illustrations are not intended to serve as a completedescription of all of the elements and features of apparatus and systemsthat utilize the structures or methods described herein. Many otherembodiments may be apparent to those of skill in the art upon reviewingthe disclosure. Other embodiments may be utilized and derived from thedisclosure, such that structural and logical substitutions and changesmay be made without departing from the scope of the disclosure.Accordingly, the disclosure and the figures are to be regarded asillustrative rather than restrictive.

Although specific embodiments have been illustrated and describedherein, it should be appreciated that any subsequent arrangementdesigned to achieve the same or similar purpose may be substituted forthe specific embodiments shown. This disclosure is intended to cover anyand all subsequent adaptations or variations of various embodiments.Combinations of the above embodiments, and other embodiments notspecifically described herein, will be apparent to those of skill in theart upon reviewing the description.

The Abstract of the Disclosure is submitted with the understanding thatit will not be used to interpret or limit the scope or meaning of theclaims. In addition, in the foregoing Detailed Description, variousfeatures may be grouped together or described in a single embodiment forthe purpose of streamlining the disclosure. This disclosure is not to beinterpreted as reflecting an intention that the claimed embodimentsrequire more features than are expressly recited in each claim. Rather,as the following claims reflect, inventive subject matter may bedirected to less than all of the features of any of the disclosedembodiments.

The above-disclosed subject matter is to be considered illustrative, andnot restrictive, and the appended claims are intended to cover all suchmodifications, enhancements, and other embodiments, which fall withinthe true scope of the present disclosure. Thus, to the maximum extentallowed by law, the scope of de present disclosure is to be determinedby the broadest permissible interpretation of the following claims andtheir equivalents, and shall not be restricted or limited by theforegoing detailed description.

What is claimed is:
 1. A method comprising: receiving an access requestat a first computing device from a second computing device, the accessrequest specifying a data structure, the data structure including firstdata stored in a first portion of the data structure and second datastored in a second portion of the data structure; extracting a first keyfrom the access request; identifying a data rights definition that isassociated with the data structure and that is associated with a secondkey, the data rights definition indicating that the first data but notthe second data is shared with an entity associated with the secondcomputing device; comparing the first key to the second key; and basedon the comparison, determining whether to grant the second computingdevice access to the first data but not the second data.
 2. The methodof claim 1, wherein the data structure is stored at the first computingdevice.
 3. The method of claim 1, wherein the data structure is storedremote to the first computing device.
 4. The method of claim 1, whereinthe data structure comprises a database table.
 5. The method claim 1,wherein the data structure comprises a bitmap index.
 6. The method ofclaim 5, wherein the bitmap index includes a plurality of bit strings,wherein a value stored in a particular location in each of the bitstrings indicates whether a corresponding signal associated with asignal source has been received.
 7. The method of claim 6, wherein thesignal source corresponds to a user, an electronic device associatedwith the user, or an internet of things (IoT) device.
 8. The method ofclaim 5, wherein the bitmap index stores data associated with at leastone demographic attribute, at least one behavior, at least one brandaffinity, or a combination thereof.
 9. The method of claim 5, the bitmapindex stores data associated with at least one patient, medical staff,medical equipment, at least one medical location, at least one medicine,at least one healthcare event, at least one medical attribute, or anycombination thereof.
 10. The method of claim 5, wherein the bitmap indexstores data associated with at least one investor, at least onefinancial advisor, at least one financial product, at least one account,at least one investment, or any combination thereof.
 11. The method ofclaim 5, wherein the bitmap index stores data associated with at leastone internet of things (IoT) device, at least one sensor reading, atleast one communication by the IoT device, at least one status of theIoT device, at least one event observed by the IoT device, or anycombination thereof.
 12. The method of claim 5, wherein the bitmap indexstores data associated with at least one customer, at least one productin inventory, or any combination thereof.
 13. The method of claim 1,wherein the data rights definition is stored in a repository that storesa plurality of data rights definitions associated with a plurality ofdata structures and a plurality of entities.
 14. The method of claim 1,wherein at least a portion of the data rights definition is stored inthe data structure.
 15. The method of claim 1, wherein the data rightsdefinition further indicates: whether the entity associated with thesecond computing device has read-only access to the first data orread-write access to the first data, that the first data is shared withthe entity associated with the second computing device for a particulartime period, whether personally identifiable information associated withthe first data is shared with the entity associated with the secondcomputing device, or any combination thereof.
 16. The method of claim 1,wherein granting access to the first data comprises sending a copy ofthe first data to the second computing device for storage in a seconddata structure at the second computing device.
 17. The method of claim16, further comprising: receiving a write operation with respect to thefirst data; and causing the write operation to be replicated at the copyof the first data in the second data structure.
 18. The method of claim17, wherein the write operation is replicated responsive to a pushsynchronization operation initiated by the first computing device orresponsive to a pull synchronization operation initiated by the secondcomputing device or by another computing device associated with theentity.
 19. An apparatus comprising: a processor; and a memory storinginstructions executable by the processor to perform operationscomprising: receiving an access request at a first computing device froma second computing device, the access request specifying a datastructure, the data structure including first data stored in a firstportion of the data structure and second data stored in a second portionof the data structure; extracting a first key from the access request;identifying a data rights definition that is associated with the datastructure and that is associated with a second key, the data rightsdefinition indicating that the first data but not the second data isshared with an entity associated with the second computing device;comparing the first key to the second key; and based on the comparison,determining whether to grant the second computing device access to thefirst data but not the second data.
 20. A computer-readable storagedevice storing instructions that, when executed by a processor, causethe processor to perform operations comprising: receiving an accessrequest at a first computing device from a second computing device, theaccess request specifying a data structure, the data structure includingfirst data stored in a first portion of the data structure and seconddata stored in a second portion of the data structure; extracting afirst key from the access request; identifying a data rights definitionthat is associated with the data structure and that is associated with asecond key, the data rights definition indicating that the first databut not the second data is shared with an entity associated with thesecond computing device; comparing the first key to the second key; andbased on the comparison, determining whether to grant the secondcomputing device access to the first data but not the second data.